﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace IBoLT.SettingWindows
{
	/// <summary>
	/// Логика взаимодействия для Jitter.xaml
	/// </summary>
	public partial class Jitter : Window
	{
		public int radius;

		// Тектура для предпросмотра
		System.Drawing.Bitmap texture;

		public Jitter(System.Drawing.Bitmap sourcePreview)
		{
			texture = sourcePreview;

			InitializeComponent();
			// Добавляю обработчик к событиям в коде, т.к. для его работы необходимо создание формы
			sliderRadius.ValueChanged += hJitterPreview;

			// Привязка команд к обработчикам //
			CommandBinding commBind = new CommandBinding(CommandsIBoLT.cJitterFilter, hJitterFilterEx); this.CommandBindings.Add(commBind);
			
			wPreview.Width = texture.Width;
			wPreview.Height = texture.Height;

			hJitterPreview(null, null);
		}

		// Обработчик изменения значений ползунков (предпросмотр)
		private void hJitterPreview(object sender, RoutedPropertyChangedEventArgs<double> e)
		{
			AForge.Imaging.Filters.Jitter filter = new AForge.Imaging.Filters.Jitter(Convert.ToInt32(sliderRadius.Value));
			wPreview.Source = SystemDrawingHelper.BitmapToBitmapImage(filter.Apply(texture));
		}

		// Обработчик кнопки "Применить"
		private void hJitterFilterEx(object sender, ExecutedRoutedEventArgs e)
		{
			radius = Convert.ToInt32(sliderRadius.Value);

			// Диалог успешен
			DialogResult = true;
		}
	}
}
